package com.meituan.sdk.model.dcpd.queueOrder.orderCreateSync;

import com.meituan.sdk.annotations.ApiMeta;
import com.google.gson.reflect.TypeToken;
import javax.validation.constraints.NotBlank;
import java.lang.reflect.Type;
import com.meituan.sdk.internal.utils.JsonUtil;
import com.google.gson.annotations.SerializedName;
import javax.validation.constraints.NotNull;
import com.meituan.sdk.MeituanResponse;
import com.meituan.sdk.MeituanRequest;

/**
* 同步线下新订单
* This file was automatically generated.
*/
@ApiMeta(
    path = "/dcpd/queue/order/create/sync",
    businessId = 49,
    apiVersion = "10009",
    apiName = "order_create_sync",
    needAuth = true
)
public class OrderCreateSyncRequest implements MeituanRequest<OrderCreateSyncResponse> {
    /**
    * <p data-diff-id="ct-diff-id-29267706-fb0d-4c9d-8dc4-1faa10fe774c">人数</p>
    */
    @NotNull(message = "peopleCount不能为空")
    @SerializedName("peopleCount")
    private Integer peopleCount;
    /**
    * <p data-diff-id="ct-diff-id-24f7e63c-ab5a-49af-906d-4b30b3789271">三方订单id</p>
    */
    @NotBlank(message = "orderId不能为空")
    @SerializedName("orderId")
    private String orderId;
    /**
    * <p data-diff-id="ct-diff-id-c29f5211-3b1d-481d-adc4-a403fb0684ea"><span style="color: rgba(0, 0, 0, 0.65)">排队号码数字部分，如A24为24</span></p>
    */
    @NotNull(message = "num不能为空")
    @SerializedName("num")
    private Integer num;
    /**
    * <p data-diff-id="ct-diff-id-6b8c69bf-c726-42e9-b5b9-30ebfaaf8046">队列位置，<span style="color: rgba(0, 0, 0, 0.65)">即当前订单在队列中所处的位置，从1开始。index=9代表前面还有8桌</span></p>
    */
    @NotNull(message = "index不能为空")
    @SerializedName("index")
    private Integer index;
    /**
    * <p data-diff-id="ct-diff-id-4c4a163f-e50f-408a-abf0-8a28b8aff6c7"><span style="color: rgba(0, 0, 0, 0.65)">美团侧桌型id</span></p>
    */
    @NotNull(message = "tableTypeId不能为空")
    @SerializedName("tableTypeId")
    private Integer tableTypeId;
    /**
    * <p data-diff-id="ct-diff-id-4814d8d2-ce53-4650-939b-0e98609ebd6b">取号时间，毫秒级时间戳</p>
    */
    @NotNull(message = "takeNumTime不能为空")
    @SerializedName("takeNumTime")
    private Long takeNumTime;
    /**
    * <p data-diff-id="ct-diff-id-99f302e6-def6-4577-bbcc-ff23a2e285ee">手机号（加密）</p>
    */
    @SerializedName("mobile")
    private String mobile;
    /**
    * <p data-diff-id="ct-diff-id-d22a4faa-8ca1-4dd8-893d-630a70252e54">备注</p>
    */
    @SerializedName("remark")
    private String remark;

    public Integer getPeopleCount() {
        return peopleCount;
    }
    public void setPeopleCount(Integer peopleCount) {
        this.peopleCount = peopleCount;
    }
    public String getOrderId() {
        return orderId;
    }
    public void setOrderId(String orderId) {
        this.orderId = orderId;
    }
    public Integer getNum() {
        return num;
    }
    public void setNum(Integer num) {
        this.num = num;
    }
    public Integer getIndex() {
        return index;
    }
    public void setIndex(Integer index) {
        this.index = index;
    }
    public Integer getTableTypeId() {
        return tableTypeId;
    }
    public void setTableTypeId(Integer tableTypeId) {
        this.tableTypeId = tableTypeId;
    }
    public Long getTakeNumTime() {
        return takeNumTime;
    }
    public void setTakeNumTime(Long takeNumTime) {
        this.takeNumTime = takeNumTime;
    }
    public String getMobile() {
        return mobile;
    }
    public void setMobile(String mobile) {
        this.mobile = mobile;
    }
    public String getRemark() {
        return remark;
    }
    public void setRemark(String remark) {
        this.remark = remark;
    }


    @Override
    public MeituanResponse<OrderCreateSyncResponse> deserializeResponse(String response) {
        Type type = new TypeToken<MeituanResponse<OrderCreateSyncResponse>>(){}.getType();
        return JsonUtil.fromJson(response, type);
    }
    @Override
    public String serializeToJson() {
        return JsonUtil.toJson(this);
    }


    @Override
    public String toString() {
        return "OrderCreateSyncRequest{" + "peopleCount=" + peopleCount + "," + "orderId=" + orderId + "," + "num=" + num + "," + "index=" + index + "," + "tableTypeId=" + tableTypeId + "," + "takeNumTime=" + takeNumTime + "," + "mobile=" + mobile + "," + "remark=" + remark + "}";
    }
}
